/*******************************************************************************
 * Copyright (c) 2008 Sylvain Sicard.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * 
 * Contributors:
 *     Sylvain Sicard - initial API and implementation
 ******************************************************************************/
package fr.jade.fraclite.api;

import org.objectweb.fractal.api.Component;
import org.objectweb.fractal.api.Interface;

/**
 * An extended {@link Interface} interface. This extended interface provides
 * access to the object that implements a component interface.
 */

public interface ComponentInterface extends Interface {

  /**
   * Sets the name of this component interface.
   *
   * @param name the new name of this component interface.
   */
  void setFcItfName (String name);

  /**
   * Returns the object that implements this component interface.
   *
   * @return the object that implements this component interface.
   * @see #setFcItfImpl setFcItfImpl
   */
  Object getFcItfImpl ();

  /**
   * Sets the object that implements this component interface.
   *
   * @param impl the object that implements this component interface.
   * @see #getFcItfImpl getFcItfImpl
   */
  void setFcItfImpl (Object impl);
  
  /**
   * Set the component to which this component interface belongs.
   * 
   * @param owner the component to which this component interface belongs.
   */
  void setFcItfOwner(Component owner);
  
  /**
   * Set the GUId of this interface
   * @param guid
   */
  void setFcItfGUId(long guid);
}
